// The Vue build version to load with the `import` command
// (runtime-only or standalone) has been set in webpack.base.conf with an alias.
import Vue from 'vue';
// 引入element UI
import ElementUI from 'element-ui';
// 引入elementUI的css样式
import 'element-ui/lib/theme-chalk/index.css';

import App from './App';

// 引入语音文件
import Speech from 'speak-tts';

// 引入路由
import router from './router';
// 引入状态管理
import store from './vuex/store';
// 引入icon
import './assets/icon/iconfont.css'
// 引入代理
import axios from 'axios';
// 将axios添加到vue的prototype下做为自定义的变量，可以直接通用this.$axios使用代理
Vue.prototype.$axios = axios;

Vue.config.productionTip = false;

// 使用element UI组件
Vue.use(ElementUI);
// 过滤器
import * as custom from './utils/util'
import { neworders } from './api/payMG'

Object.keys(custom).forEach(key => {
    Vue.filter(key, custom[key])
})

// 全局前置路由守卫，每一次路由切换前被调用
router.beforeEach((to, from, next) => {
    // console.log('to:', to)
    // console.log('from:',from)
    if (to.matched.length != 0) {
        if (to.meta.requireAuth) { // 判断该路由是否需要登录权限
            if (Boolean(localStorage.getItem("userInfo"))) { // 通过vuex state获取当前的user是否存在
                next();
            } else {
                next({
                    path: '/login',
                    query: { redirect: to.fullPath } // 将跳转的路由path作为参数，登录成功后跳转到该路由
                })
            }
        } else {
            if (Boolean(localStorage.getItem("userInfo"))) { // 判断是否登录
                if (to.path != "/" && to.path != "/login") { //判断是否要跳到登录界面
                    next();
                } else {
                    /**
                     * 防刷新，如果登录，修改路由跳转到登录页面，修改路由为登录后的首页 
                     */
                    next({
                        // path: '/goods/Goods'
                        path:'/order/waitAssign'
                    })
                }
            } else {
                next();
            }
        }
    } else {
        next({
            path: '/login',
            query: { redirect: to.fullPath } // 将跳转的路由path作为参数，登录成功后跳转到该路由
        })
    }
})

/* eslint-disable no-new */
new Vue({
    el: '#app',
    router,
    store, //使用store vuex状态管理
    // 引入入口的组件App.vue
    components: { App },
    // 当index.html下的<div id="app"></div>内不写组件引入标签时，为了html整洁，就写些用template来引入
    template: '<App/>',    
    // render : h =>h(App),
    data: {
        // 空的实例放到根组件下，所有的子组件都能调用
        Bus: new Vue()
    },
    mounted() {
        // 订单语音播报
        this.speechInit()
        this.IntervalOrder()
        // let audioElement = new Audio('/src/assets/img/OrderMp3.mp3')
    },
    // 定义订单提醒方法
    methods: {
        // 语音播报 
        speechInit(){
            this.speech = new Speech()
            this.speech.setLanguage('zh-CN')
            this.speech.init().then(()=>{})
        },
        // 5分钟扫描一次接口，判断是否有新订单
        IntervalOrder() {
            this.timerId = setInterval(() => {
                this.getOrderNotice()                
            },300000)
        },
        getOrderNotice() {
            let newLength = 0
            // 发送接口
            neworders().then(res => {
                console.log('main-new', res.data.length)
                if (res.data.length != 0) {
                    this.speekTtsSpeech(res.data.length)
                    // this.audioElement.play()
                    this.$message.success('你有'+res.data.length+'个新的订单，请尽快处理')
                    
                }
            })
        },
        speekTtsSpeech(length) {            
            let msg = '你有'+length+'个新的订单，请尽快处理'
            this.speech.speak({ text: msg }).then((res) => {
                console.log('播报成功',res)
            })
        }
    } 
})